package com.example.oppotest.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @Author wyk
 * @Date: 2025/2/26 23:37
 */
public class TimeConversion {

    /**
     * 将字符串格式yyyyMMdd的字符串转为日期，格式"yyyy-MM-dd"
     *
     * @param date
     *            日期字符串
     * @return String 返回格式化的日期
     * @throws ParseException
     *             分析时意外地出现了错误异常
     */
    public static String strToDateFormat(String date) throws ParseException {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
        formatter.setLenient(false);
        Date newDate = formatter.parse(date);
        formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        return formatter.format(newDate);
    }

    /**
     * date转string类型yyyy-MM-dd HH:mm:ss
     *
     * @param currentTime
     *            date时间类型yyyy-MM-dd HH:mm:ss
     * @return String
     */
    public static String dateToString(Date currentTime) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = formatter.format(currentTime);

        return dateString;
    }

    public static long dateToLong() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.MILLISECOND, 0); // 清除毫秒部分

        // 获取时间戳（毫秒）
        return calendar.getTimeInMillis();
    }

    /**
     * date转string类型 自定义格式类型
     *
     * @param currentTime
     *            date时间类型
     * @param type
     *            类型 yyyy-MM-dd HH:mm:ss
     * @return String
     */
    public static String dateToStringType(Date currentTime, String type) {
        SimpleDateFormat formatter = new SimpleDateFormat(type);
        String dateString = formatter.format(currentTime);

        return dateString;
    }

    /**
     * 时间戳转换成字符串
     */
    public static String getDateToString(long time) {
        Date d = new Date(time);
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sf.format(d);
    }

    /**
     * 计算时间差(秒)
     */
    public static long leaveTime(String longTime, String shortTime) {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date1;
        Date date2;
        try {
            date1 = df.parse(longTime);
            date2 = df.parse(shortTime);
            return (date1.getTime() - date2.getTime())/1000;
        } catch (ParseException e) {
            e.printStackTrace();
            return 0;
        }
    }

    /**
     *  获得昨天的日期
     */
    public static String getYesterday() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE,-1);
        Date d = cal.getTime();
        SimpleDateFormat sp=new SimpleDateFormat("yyyy-MM-dd");
        String yesterday = sp.format(d);//获取昨天日期

        return yesterday;
    }

    public static void main(String[] args) {
        Long day = dateToLong();
        System.out.println(day);
    }

}
